package com.mathdroid.model.enums;

import java.util.LinkedList;

/**
 * The buff types to order buffs and debuffs into groups.
 */
public enum EBuffType {
	/**
	 * Debuffs that are applied on NPCs.
	 */
	BENEFICIAL_DEBUFF("Beneficial Debuffs"),
	/**
	 * Debuffs that are applied on Players.
	 */
	DISADVANTAGEOUS_DEBUFF("Disadvantageous Debuffs"),
	/**
	 * The four "standard" group buffs.
	 */
	BENEFICIAL_GROUP_BUFF("Beneficial Group Buffs"),
	/**
	 * Miscellaneous Buffs and Procs.
	 */
	BENEFICIAL_BUFF("Beneficial Buffs"),
	/**
	 * Buffs that NPCs gain.
	 */
	DISADVANTAGEOUS_BUFF("Disadvantageous NPC Buffs");
	
	/**
	 * The description of the type.
	 */
	private String description = null;
	
	/**
	 * Create a new type.
	 * @param d Description.
	 */
	EBuffType(final String d) {
		this.description = d;
	}
	
	@Override
	public String toString() {
		return this.description;
	}
	
	/**
	 * Get all types.
	 * @return All types.
	 */
	public static LinkedList<EBuffType> getAllTypes() {
		LinkedList<EBuffType> list = new LinkedList<EBuffType>();
		
		list.add(BENEFICIAL_GROUP_BUFF);
		list.add(BENEFICIAL_BUFF);
		list.add(BENEFICIAL_DEBUFF);
		list.add(DISADVANTAGEOUS_DEBUFF);
		list.add(DISADVANTAGEOUS_BUFF);
		
		return list;
	}
}
